home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 4 / Amiga Tools 4.iso / tools / internet-tools / connect-line / cl / devkit / c / include / cl_xfer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-12  |  10.1 KB  |  253 lines

  1. #ifndef _CL_XFER_H
  2. #define _CL_XFER_H
  3.  
  4. /*
  5. **   cl_xfer.h 5.0
  6. **   -------------
  7. **
  8. **   Connectline File Transfer Protocol Driver definitions
  9. **  
  10. */
  11.  
  12. #include <time.h>
  13. #include <cl/cl_prefs.h>
  14.  
  15. extern struct Library *CLXFERBase;
  16.  
  17. #ifndef _NO_PRAGMAS
  18. #pragma libcall CLXFERBase CLXFER_Info 1e 0
  19. #pragma libcall CLXFERBase CLXFER_FreeList 24 801
  20. #pragma libcall CLXFERBase CLXFER_ResetPrefs 2a 0
  21. #pragma libcall CLXFERBase CLXFER_Transfer 30 BA98005
  22. #pragma tagcall CLXFERBase CLXFER_TransferTags 30 BA98005
  23. #pragma libcall CLXFERBase CLXFER_AllocateSendfilelist 36 801
  24. #pragma tagcall CLXFERBase CLXFER_AllocateSendfilelistTags 36 801
  25.  
  26. #pragma libcall CLXFERBase CLXFER_SER_Open 3c 943210807
  27. #pragma tagcall CLXFERBase CLXFER_SER_OpenTags 3c 943210807
  28. #pragma libcall CLXFERBase CLXFER_SER_Close 42 801
  29. #pragma libcall CLXFERBase CLXFER_SER_SetParams 48 3210805
  30. #pragma libcall CLXFERBase CLXFER_SER_Write 4e 09803
  31. #pragma libcall CLXFERBase CLXFER_SER_Query 54 801
  32. #pragma libcall CLXFERBase CLXFER_SER_CD 5a 801
  33. #pragma libcall CLXFERBase CLXFER_SER_Clear 60 801
  34. #pragma libcall CLXFERBase CLXFER_SER_Flush 66 801
  35. #pragma libcall CLXFERBase CLXFER_SER_Inhibit 6c 0802
  36. #pragma libcall CLXFERBase CLXFER_SER_WaitMask 72 801
  37. #pragma libcall CLXFERBase CLXFER_SER_Read 78 A2109806
  38. #pragma libcall CLXFERBase CLXFER_SER_DropDTR 7e 0802
  39. #pragma libcall CLXFERBase CLXFER_SER_TempClose 84 0802
  40. #pragma libcall CLXFERBase CLXFER_SER_SendModemCmd 8a 109804
  41. #pragma libcall CLXFERBase CLXFER_SER_Converse 90 BA910806
  42. #pragma tagcall CLXFERBase CLXFER_SER_ConverseTags 90 BA910806
  43. #pragma libcall CLXFERBase CLXFER_SER_SetCheckCD 96 0802
  44. #pragma libcall CLXFERBase CLXFER_SER_Gets 9c A109805
  45. #pragma libcall CLXFERBase CLXFER_SER_GetLineRate a2 801
  46. #pragma libcall CLXFERBase CLXFER_SER_SetLineRate a8 0802
  47. #pragma libcall CLXFERBase CLXFER_SER_Transfer ae BA9804
  48. #pragma tagcall CLXFERBase CLXFER_SER_TransferTags ae BA9804
  49. #pragma libcall CLXFERBase CLXFER_SER_Port_Hangup b4 9802
  50. #pragma libcall CLXFERBase CLXFER_SER_Port_Dial ba 10BA9806
  51. #pragma libcall CLXFERBase CLXFER_SER_SetConObject c0 9802
  52. #pragma libcall CLXFERBase CLXFER_SER_SetConWriteObject c6 9802
  53. #pragma libcall CLXFERBase CLXFER_GetProtoList cc 0
  54. #pragma libcall CLXFERBase CLXFER_GetProtoNameIndex d2 801
  55. #pragma libcall CLXFERBase CLXFER_GetProtoComment d8 801
  56.  
  57. struct List * CLXFER_Info( void );
  58. void CLXFER_FreeList( struct List *list );
  59. void CLXFER_ResetPrefs( void );
  60. struct List * CLXFER_Transfer( STRPTR protoname, struct IOExtSer *ioread, struct IOExtSer *iowrite, struct List *sendfilelist, struct TagItem *tags );
  61. struct List * CLXFER_TransferTags( STRPTR protoname, struct IOExtSer *ioread, struct IOExtSer *iowrite, struct List *sendfilelist, ... );
  62. struct List * CLXFER_AllocateSendfilelist( STRPTR *files );
  63. struct List * CLXFER_AllocateSendfilelistTags( ... );
  64.  
  65. void CLXFER_SER_Close( struct clxfer_serialhandle * );
  66. struct clxfer_serialhandle * CLXFER_SER_Open( char *, ULONG, ULONG, ULONG, ULONG, ULONG, struct TagItem * );
  67. struct clxfer_serialhandle * CLXFER_SER_OpenTags( char *, ULONG, ULONG, ULONG, ULONG, ULONG, ... );
  68. LONG CLXFER_SER_SetParams( struct clxfer_serialhandle *, ULONG, ULONG, ULONG, ULONG );
  69. LONG CLXFER_SER_Write( struct clxfer_serialhandle *, APTR, LONG );
  70. LONG CLXFER_SER_Query( struct clxfer_serialhandle * );
  71. LONG CLXFER_SER_CD( struct clxfer_serialhandle * );
  72. void CLXFER_SER_Clear( struct clxfer_serialhandle * );
  73. void CLXFER_SER_Flush( struct clxfer_serialhandle * );
  74. LONG CLXFER_SER_Inhibit( struct clxfer_serialhandle *, ULONG );
  75. LONG CLXFER_SER_TempClose( struct clxfer_serialhandle *, ULONG );
  76. ULONG CLXFER_SER_WaitMask( struct clxfer_serialhandle * );
  77. LONG CLXFER_SER_Read( struct clxfer_serialhandle *, UBYTE *, ULONG, LONG, ULONG, ULONG * );
  78. LONG CLXFER_SER_DropDTR( struct clxfer_serialhandle *, ULONG );
  79. LONG CLXFER_SER_SendModemCmd( struct clxfer_serialhandle *, STRPTR, ULONG, ULONG );
  80. LONG CLXFER_SER_Converse( struct clxfer_serialhandle *, ULONG timeout, ULONG modemdelay, APTR muiapp, ULONG *checkabortflag, APTR converselist );
  81. LONG CLXFER_SER_ConverseTags( struct clxfer_serialhandle *, ULONG timeout, ULONG modemdelay, APTR muiapp, ULONG *checkabortflag, ... );
  82. void CLXFER_SER_SetCheckCD( struct clxfer_serialhandle *, ULONG checkcarrier );
  83. ULONG CLXFER_SER_GetLineRate( struct clxfer_serialhandle * );
  84. ULONG CLXFER_SER_SetLineRate( struct clxfer_serialhandle *, ULONG linerate );
  85. LONG CLXFER_SER_Gets( struct clxfer_serialhandle *, STRPTR, ULONG, ULONG, APTR );
  86. struct List * CLXFER_SER_Transfer( STRPTR protoname, struct clxfer_serialhandle *, struct List *sendfilelist, struct TagItem *tags );
  87. struct List * CLXFER_SER_TransferTags( STRPTR protoname, struct clxfer_serialhandle *, struct List *sendfilelist, ... );
  88.  
  89. ULONG CLXFER_SER_Port_Hangup( struct clxfer_serialhandle *, struct PortInfo *portinfo );
  90. ULONG CLXFER_SER_Port_Dial( struct clxfer_serialhandle *, struct PortInfo *portinfo, STRPTR phone, STRPTR modemmsgbuffer, APTR muiapp, ULONG *abortflagptr );
  91.  
  92. void CLXFER_SER_SetConObject( struct clxfer_serialhandle *, APTR clmuiconobj );
  93. void CLXFER_SER_SetConWriteObject( struct clxfer_serialhandle *, APTR clmuiconobj );
  94.  
  95. STRPTR * CLXFER_GetProtoList( void );
  96. LONG CLXFER_GetProtoNameIndex( STRPTR protoname );
  97. STRPTR CLXFER_GetProtoComment( STRPTR protoname );
  98.  
  99. #endif
  100.  
  101. //
  102. // Eine Exec-Liste mit diesen Nodes beschreibt die
  103. // vorhanden Protokollbibliotheken.
  104. //
  105.  
  106. typedef struct clxfer_info {
  107.   struct Node    n;               // Exec-List-Node
  108.   char        name[ 30 ];       // Name
  109.   char        desc[ 128 ];      // Beschreibung
  110.   ULONG        flags;             // s.u.
  111.   char          template[ 80 ];    // Parameter-Template
  112. } clxfer_info;
  113.  
  114. #define CLXFERF_BIDIR  1        // Bidirektionales Protokoll
  115. #define CLXFERF_RESUME 2        // Resume möglich
  116.  
  117. //
  118. // Eine Exec-Liste mit diesen Nodes beschreibt die
  119. // zu verschickenden Files.
  120. //
  121.  
  122. typedef struct clxfer_sendfile {
  123.   struct MinNode n;             // Exec-Node-Verkettung
  124.   UBYTE      filename[ 256 ];      // Voller Name des Files
  125.   ULONG      offset;               // Offset in der Datei. Default 0
  126.   ULONG      len;                // zu sendende Länge. Bei 0 komplette Datei
  127.   UBYTE      sendname[ 32 ];       // Name der Datei auf der Gegenseite 
  128.   int        success;              // Datei erfolgreich übertragen?
  129.   time_t     time;                // benötigte Zeit
  130.   ULONG      userdata;            // For use by user
  131. } clxfer_sendfile;
  132.  
  133. //
  134. // Eine Exec-Liste mit folgenden Nodes gibt CLXFER_Transfer()
  135. // zurück. Ist diese Liste leer, wurden keine Dateien empfangen.
  136. // 
  137.  
  138. typedef struct clxfer_recfile {
  139.   struct MinNode     n;         // Exec-Node-Verkettung
  140.   struct FileInfoBlock  fib;    // Kopie des FileInfoBlocks
  141.   int           success;          // Übertragung erfolgreich
  142.   time_t         time;            // benötigte Zeit
  143. } clxfer_recfile;
  144.  
  145.  
  146. //
  147. // Tags für CLXFER_Transfer()
  148. //
  149.  
  150. #define CLXFER_TAGBASE (TAG_USER+0x19749)
  151. #define CLXFER_RecDir (CLXFER_TAGBASE+1)  // STRPTR: Verzeichnis, in das
  152.                       // empfangen werden soll
  153. #define CLXFER_DoRec (CLXFER_TAGBASE+2)   // BOOL: Auch empfangen.
  154.                       // Führt bei unidirektionalen
  155.                       // Protokollen zu zwei
  156.                       // Durchgängen: Erst Senden,
  157.                       // dann empfangen.
  158. #define CLXFER_RecFirst (CLXFER_TAGBASE+3) // BOOL: Erst empfangen, dann
  159.                       // senden. Ignoriert bei
  160.                       // Bi-Protokollen.
  161. #define CLXFER_CheckCD (CLXFER_TAGBASE+4)  // BOOL: Carrier prüfen.
  162.                       // Default TRUE!
  163. #define CLXFER_MUIApp (CLXFER_TAGBASE+5)  // MUI-Application-Objekt.
  164. #define CLXFER_Hook (CLXFER_TAGBASE+6)   // HOOK: Wird für MUI-Ids
  165.                       // und Signals aufgerufen.
  166. #define CLXFER_Signals (CLXFER_TAGBASE+7)  // ULONG: App-Signale.
  167. #define CLXFER_Args (CLXFER_TAGBASE+8)   // STRPTR: zusätzliche
  168.                       // Argumente.
  169. #define CLXFER_MUIWinID (CLXFER_TAGBASE+9) // MUIA_Window_ID für
  170.                       // Transfer-Fenster.
  171. #define CLXFER_LineBaud (CLXFER_TAGBASE+10) // Real line baud rate (as opposed to serial DTE rate)
  172.  
  173. #define CLXFER_Username (CLXFER_TAGBASE+11) // Username
  174.  
  175. //
  176. // Serial-Support-Funktionen
  177. //
  178. // This structure is *PRIVATE* -- touch it and die!
  179. //
  180.  
  181. typedef struct clxfer_serialhandle {
  182.     struct IOExtSer  *readreq, *writereq;
  183.     struct    timerequest *timereq;
  184.     struct MsgPort   *readport, *writeport, *timerport;
  185.     STRPTR               devicename;
  186.     ULONG                deviceunit;
  187.     ULONG                serflags;
  188.     ULONG                serbaud;
  189.     ULONG                serrbuf;
  190.     ULONG                linerate;
  191.     APTR                conobj;            /* cl_console.mui object */
  192.     APTR                conwriteobj;    /* cl_console.mui object */
  193.  
  194.     UBYTE                readbuffer[ 1 ];
  195.     UBYTE                timeropen;
  196.     UBYTE                seropen;
  197.     UBYTE                readq, timeq;
  198.     UBYTE                checkcd;    /* Flag -- automatic carrier check */
  199.     UBYTE                inhibit, closed;
  200.  
  201. } clxfer_serialhandle;
  202.  
  203. typedef struct clxfer_converse {
  204.     STRPTR        waitforwhat;        /* String to wait for (max. 127 chars). NULL terminates array */
  205.     ULONG        action;                /* Action to take if what appeared */
  206.     APTR        actiondata;            /* Data for action */
  207. } clxfer_converse;
  208.  
  209. #define    CLXFE_SERCONVACT_EXIT        0     /* Exit conversation, return data */
  210. #define CLXFE_SERCONVACT_SEND        1    /* Send data as string */
  211. #define CLXFE_SERCONVACT_SENDMODEM    2    /* Send data as Modem command */
  212.  
  213. #define CLXFE_SERCONVFLG_CASE        (1L<<31)    /* Flag: "what" is case-sensitive */
  214. #define CLXFE_SERCONVFLG_CR            (1L<<30)    /* Flag: append CR on SEND */
  215. #define CLXFE_SERCONVFLG_WAIT        (1L<<29)    /* Flag: react only after 1 second pause */
  216.  
  217. //
  218. //    Flags for CLXFER_SER_Gets() (ored into maxlen)
  219. //
  220.  
  221. #define CLXFER_GETS_ECHO (1L<<30)
  222. #define CLXFER_GETS_ECHO_SECRET (1L<<29)
  223.  
  224.  
  225. //
  226. //    Tags für CLXFER_SER_OpenHandle()
  227. //
  228.  
  229. /*
  230. **    Error returns
  231. */
  232.  
  233. #define CLXFE_SER_INHIBITED (-2)        /* Channel is inhibited */
  234. #define CLXFE_SER_NOCARRIER    (-3)        /* Carrier lost */
  235. #define CLXFE_SER_TEMPCLOSED (-4)        /* Channel is temporarly closed */
  236. #define CLXFE_SER_DTRDROPREOPEN (-5)    /* Reopen after DTR Drop failed! */
  237.  
  238. //
  239. // Prefs
  240. //
  241.  
  242. #define CLXFER_PREFSID MAKE_ID('O','X','F','E')
  243. #define CLXFER_SUBID_SETTINGS (TAGT_NOL|0)
  244.  
  245. typedef struct clxfer_prefs {
  246.   char        name[ 12 ];     // Name für den User, keine Leerzeichen
  247.   char        comment[ 64 ];   // Kommentar für den User
  248.   char        driverlib[ 20 ];  // clxfer_#?
  249.   char        args[ 256 ];    // special args
  250. } clxfer_prefs;
  251.  
  252. #endif
  253.